<?php
/**
 * 发仔<i@fazi.me> 2018-07-17
 */

namespace app\open\controller;
/**
 * Class Plus
 * @name【3 车辆调度（订单管理）】
 * @package app\open\controller
 */
use app\open\model;#调用MODEL
use app\open\validate;
use think\Hook;
class Order extends Base
{
    public function _initialize()
    {
        parent::_initialize();
    }
    /**
     * @name【1.1 获取订单】
     * @desc【】
     * @method【post】
     * @param【_list】
     * @return【】
     * @table 【order,order_fee,order_gps,order_pay】
     */
    public function getOrder()
    {
        $joins = ['car','driver','area','company','fee','gps'];
        $data = [];
        //调用集成
        $data['count'] = $this->getCountCommon(new model\Order(),$joins);
        $data['data'] = $data['count'] ? $this->getListOrAll(new model\Order(),$joins) : [];
//        halt(1);
        return $this->res($data);
    }

    /**
     * @name【2.1 审批订单】
     * @desc【】
     * @method【post】
     * @allow【order_id,order_state】
     * @param【
     * order_id $ int $ 123 $ 订单ID  $ 1 #
     * order_state $ int $ 1 $ 要变成的状态码 $ 1 #】
     * @return【】
     * @table 【order】
     * @throws
     */
    public function auditOrder()
    {
        $param = $this->getParam(new validate\OrderValidate(),'audit');
        $order = (new model\Order())->get($param['order_id']);
        //订单状态错误
        if(!in_array($order->order_state,[1])) {
            throw new \app\base\exception\BaseException("订单不存在或状态错误");
        }
        //审批状态错误
        if(!in_array($param['order_state'],[2,3])) {
            throw new \app\base\exception\BaseException("审批状态错误");
        }
        //更改状态
        $rslt = $order->allowField('order_state')->save($param);
        return $this->res($rslt);
    }

    /**
     * @name【2.2 取消订单】
     * @desc【】
     * @method【post】
     * @allow【order_id,order_state】
     * @param【
     * order_id $ int $ 123 $ 订单ID  $ 1 #
     * close_chcek $ int $ 1 $ 输入1做为确认 $ 1 #
     * 】
     * @return【
     *
     * 】
     * @table 【order】
     * @throws
     */
    public function closeOrder()
    {
        $param = $this->getParam(new validate\OrderValidate(),'close');
        if($param['close_chcek'] == '1') {
            $order = (new model\Order())->get($param['order_id']);
            //更改状态
            $order->order_state = '12';
            $rslt = $order->save();
            $rslt['msg'] = '成功';
        }
        else{
            $rslt['msg'] = '失败,缺close_chcek#1';
        }
        return $this->res($rslt);
    }

    /**
     * @name【3.1 订单派车 ing】
     * @desc【】
     * @method【post】
     * @allow【order_id,car_id,driver_id,car_number】
     * @param【】
     * @return【】
     * @table 【order】
     * @throws
     */
    public function dispatchOrder()
    {
        $param = $this->getParam(new validate\OrderValidate(),'dispatch');
        $order = (new model\Order())->get($param['order_id']);
        //订单状态错误
        if(!in_array($order->order_state,[2,4,5])) {
            throw new \app\base\exception\BaseException("订单不存在或状态错误");
        }
        //更改状态
        $param['order_state'] = 5;#已派车
        $rslt = $order->allowField('car_id,driver_id,car_number,order_state')->save($param);
        //推送
        $rslt && Hook::listen('send_order',$param['order_id']);

        return $this->res($rslt);
    }


}